General purpose microprocessors usually devote significant area for execution of fixed point or integer instructions that can complete in a single cycle. These instructions include ADD, ROTATE, COMPARE, COUNT-LEADING-ZEROS ("CLZ"), and bitwise-logical operations such as AND and OR. Typically, a separate macro is devoted to each instruction, and the design of each is optimized for its function. A macro is defined herein as a collection of circuits designed to perform an operation on a plurality of inputs to produce an output.
When these various macros are placed on the integrated circuit ("chip"), they very often share input and result paths, so that only one of them can operate in a given cycle. While this may be compatible with other restrictions on the sequencing of instructions in the microprocessor, it results in a low utilization of the silicon. In addition, because each macro is designed separately, many design hours are spent implementing the circuits.
As a result, there is a need in the art for a macro that is multifunctional.